home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / intrfc70.zip / INTRFC70.DOC < prev    next >
Text File  |  1994-03-21  |  7KB  |  155 lines

  1. INTRFC - Program to dump TPU files. (March, 1994)
  2.  
  3. Version 7.0:  Dumps TPU, TPP and TPW format files.
  4.  
  5.      Written for the public domain by Milan Dadok.
  6.      Internet: xdadok00@dcse.fee.vutbr.cz (till September 1995)
  7.  
  8. INTRODUCTION
  9.  
  10.      Several times I had to write the source of a tpu, because it was
  11.      not available. I started to look for some documentation about TPU
  12.      files and I found INTRFC from D.J. Murdoch, that works with TP 6.0
  13.      tpu files (see history below). Because I needed to dump TPU files
  14.      from BP 7.0 and I was wondering how tpu files are encoded, I
  15.      upgraded it to BP 7.0 files. I also fixed same mistakes and added
  16.      some new features (print enum and set constants etc).
  17.  
  18.      Because D.J. Murdoch does not plan to update INTRFC any more,
  19.      please send bugs only to my Internet address.
  20.  
  21.      The reason I included source code is because it will serve as a bit
  22.      of documentation for the TPU file format:  Borland will never
  23.      publish it.  They want to be free to change the format, tweaking
  24.      performance when they can.
  25.  
  26.      You must compile INTRFC in BP 7.0. Normally it will dump only BP
  27.      7.0 (TPUQ) files. If you want to dump TP 6.0 (TPU9) files, you must
  28.      recompile INTRFC with the symbol UNIT60 defined. Change SWITCHES.INC
  29.      or compile with BPC: BPC intrfc.pas /b /DUNIT60
  30.  
  31.  
  32. USAGE:
  33.        INTRFC /options unit [output_file]
  34.    where options are letters from the following:
  35.      B - emitted code bytes
  36.      C - initialized constant blocks
  37.      D - code blocks
  38.      E - routine entry records
  39.      G - emitted global const bytes
  40.      H - TPU header
  41.      I - implementation section (if $D was used in compilation)
  42.      L - proc/fn locals (if $L was used in compilation)
  43.      M - source line number map
  44.      N - names in interface
  45.      O - const relocation records
  46.      R - relocation records
  47.      S - source file records
  48.      U - unit list
  49.      V - var blocks
  50.      W - exported name records
  51.      Z - browser section {$Y+}
  52.      A - turn all options on
  53.  
  54.      Options are processed sequentially and toggle the display.
  55.      Use /Tpath[;path] to set the Turbo directory for TURBO.TPL
  56.       and referenced units.
  57.      E.G. To see all but the relocation records in the system unit, use
  58.         INTRFC /AR /T\bp\bin;\bp\units SYSTEM
  59.      The default is just the names in the interface section.
  60.  
  61. LIMITATIONS
  62.  
  63.      There are tons of limitations to INTRFC.  It doesn't know how to
  64.      print the values of typed constants. Etc. Etc. Etc. If you want it
  65.      to do something differently just go ahead and change it!
  66.  
  67.      I recommend compiling with all possible checks turned on, since
  68.      it's pretty easy to get lost in all those pointers and records.
  69.  
  70. FILES
  71.  
  72.      The following files should be included in this package.
  73.  
  74.       INTRFC70 DOC    This file
  75.       TPU9     DOC    TPU structure outline (TP 6.0)
  76.       TPUQ     DOC    TPU structure outline (BP 7.0)
  77.       INTRFC   EXE    The executable to dump BP 7.0 tpu files
  78.  
  79.       INTRFC   PAS    Main program
  80.       GLOBALS  PAS    Program globals
  81.  
  82.       HEAD     PAS    TPU header dumper
  83.       NAMELIST PAS    Prints interface section
  84.       NAMETYPE PAS    Type definitions for NAMELIST
  85.       BLOCKS   PAS    Routines for code blocks, etc.
  86.       SRCFILES PAS    Prints source files & line numbers
  87.       RELOC    PAS    Prints relocation records
  88.       CODE     PAS    Code and const dumper
  89.  
  90.       DUMP     PAS    Various dump routines
  91.       LOADER   PAS    Reads in .TPU and .TPL files
  92.       UTIL     PAS    Various utility routines
  93.       TEST1    PAS    Test file
  94.       TEST1    INC    Test include file
  95.       TEST1    ASM    Test assembler file
  96.       TEST1    OBJ    Test object file
  97.       PARAMS   PAS    Parses parameters
  98.  
  99.      Have fun with INTRFC and Turbo (or Borland) Pascal.
  100.  
  101. Milan Dadok
  102.  
  103. HISTORY of INTRFC (by D.J. Murdoch)
  104.  
  105.      I started INTRFC because I got a library of Turbo Pascal 4.0
  106.      subroutines which had some errors in the documentation.  One of the
  107.      functions wanted its arguments to be a special type, but the docs
  108.      didn't tell me which one.  TP gave me an error message saying I
  109.      wasn't using the right type, but wouldn't tell me which one to use
  110.      either.  I decided to decode the TPU file and figure out what TP
  111.      wanted.  Once I got started, it was hard to stop. So, I ended up
  112.      writing INTRFC, which printed out almost all the information you'll
  113.      ever need about the interface to a TPU unit.
  114.  
  115.      When I upgraded INTRFC to TP 5.5 files, I got carried away again.
  116.      Version 1.2 dumped the complete file, not just the interface
  117.      section.
  118.  
  119.      The release of TP 6.0 made it necessary to upgrade again. This one
  120.      was easy:  there aren't very many differences between version 5.5
  121.      and 6.0 .TPU files.  I decided to fill in a couple of gaps in
  122.      version 1.2, and the current one dumps everything in the file.
  123.      However, I made a few mistakes in release 1.3; version 1.31 fixed
  124.      those.
  125.  
  126.      When TP for Windows, version 1.0, came out, I was amazed that
  127.      version 1.31 almost worked; it turns out that the file format for
  128.      TP6 and TPW1 is identical.  There were a few errors in INTRFC 1.31
  129.      because some of the Windows features had never showed up; version
  130.      1.32 filled in those areas.  I also cleaned up the display a bit.
  131.  
  132.      In June '92, TPW 1.5 came out with completely compatible .TPU
  133.      files. No need for an upgrade.  However, William Peavy pointed out
  134.      the omission of the flag for "interrupt" procedures, so I added
  135.      that in.  I also got tired of the terrible numbering scheme I'd
  136.      stuck to for so long, and decided that instead of 1.33, I'd call
  137.      the new one 6.3.
  138.  
  139.      Because of the way INTRFC has been written, i.e. entirely by
  140.      guesswork, there are probably special cases that it doesn't handle
  141.      properly.  That's one reason the source code is there - so other
  142.      people can fix up my mistakes.
  143.  
  144.      The other reason I included source code is because it will serve as
  145.      a bit of documentation for the TPU file format:  Borland will never
  146.      publish it.  They want to be free to change the format, tweaking
  147.      performance when they can.  (As you'll see if you study the .TPU
  148.      design, the famous "obsolete .TPU" problem doesn't come from the
  149.      frequent format changes; it's basic to the .TPU design itself.
  150.      References to old SYSTEM and other units just can't be updated.)
  151.      This reason has become a little obsolete now:  William Peavy has
  152.      written a very complete description of the TP 6.0/TPW 1.x .TPU
  153.      format; I highly recommend picking up a copy.
  154.  
  155.